<?php

Yii::import('clientes.models._base.BaseEmpresa');

class Empresa extends BaseEmpresa {

    public $segmento;

    /**
     * @return Empresa
     */
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public static function label($n = 1) {
        return Yii::t('app', 'Empresa|Empresas', $n);
    }

    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels() {
        return array(
            'Emp_Codigo' => Yii::t('app', 'Código'),
            'Emp_RazonSocial' => Yii::t('app', 'Razón Social'),
            'Emp_RUC' => Yii::t('app', 'Ruc'),
            'Emp_Gru_Codigo' => Yii::t('app', 'Grupo'),
            'Emp_Cat_Codigo' => Yii::t('app', 'Categoría'),
            'Emp_Cla_Codigo' => Yii::t('app', 'Clase'),
            'Emp_Gru_Eco_Codigo' => Yii::t('app', 'Grupo Económico'),
            'Emp_Seg_Codigo' => Yii::t('app', 'Sub-segmento'),
            'Emp_Est_Codigo' => Yii::t('app', 'Estado'),
            'Emp_Eje_Codigo' => Yii::t('app', 'Eje Codigo'),
            'Emp_SadegCodigo' => Yii::t('app', 'Sadeg Codigo'),
            'Emp_Observacion' => Yii::t('app', 'Observación'),
            'Emp_FecRegistro' => Yii::t('app', 'Fecha Registro'),
            'Emp_FecModificacion' => Yii::t('app', 'Fecha Modificación'),
            'Emp_Ciudad' => Yii::t('app', 'Ciudad'),
            'contactos' => null,
            'detalleclientes' => null,
            'emails' => null,
            'empEstCodigo' => null,
            'empSegCodigo' => null,
            'empGruCodigo' => null,
            'empClaCodigo' => null,
            'empCatCodigo' => null,
            'empGruEcoCodigo' => null,
            'empresapersonas' => null,
            'telefonos' => null,
        );
    }

    public function getListSelect2($search_value = null) {
        $command = Yii::app()->db->createCommand()
                ->select('cu.Emp_Codigo as id,concat(IFNULL(CONCAT(cu.Emp_RUC," "),""),cu.Emp_RazonSocial) as text')
                ->from('centralclientes.empresa cu');
//        TODO: estado activo inactivo
//                ->where('cu.estado = :estado', array(':estado' => Cuenta::ESTADO_ACTIVO));
        if ($search_value) {
            $command->andWhere("cu.Emp_RUC like '$search_value%' or cu.Emp_RazonSocial like '$search_value%'");
        }
        $command->limit(10);
        return $command->queryAll();
    }

    public function searchParams() {
        return array(
            'Emp_RazonSocial',
            'Emp_RUC',
            'Emp_Gru_Codigo',
            'Emp_Cat_Codigo',
            'Emp_Cla_Codigo',
            'Emp_Gru_Eco_Codigo',
        );
    }

    public function rules() {
        return array_merge(parent::rules(), array(
            array('Emp_RUC', 'required'),
            array('Emp_RUC', 'unique'),
        ));
    }

    /*
      @author Cristian Araque<caraque@tradesystem.com.ec>
     * busqueda para el filtro de todos
     */

    public function search() {
        $criteria = new CDbCriteria;
        $sort = new CSort;
//        $criteria->
        $criteria->with = array(
            'empGruCodigo',
            'empClaCodigo',
            //poner si es necesario
//            'empEstCodigo',
//            'empSegCodigo',
            'empCatCodigo',
            'empGruEcoCodigo',
        );
        $criteria->compare('Emp_RazonSocial', $this->Emp_RazonSocial, true, 'OR');
        $criteria->compare('Emp_RUC', $this->Emp_RUC, true, 'OR');
        $criteria->compare('empGruCodigo.Gru_Nombre', $this->Emp_Gru_Codigo, true, 'OR');
        $criteria->compare('empClaCodigo.Cla_Nombre', $this->Emp_Cla_Codigo, true, 'OR');
        $criteria->compare('empCatCodigo.Cat_Nombre', $this->Emp_Cat_Codigo, true, 'OR');
        $criteria->compare('empGruEcoCodigo.GruEco_Nombre', $this->Emp_Gru_Eco_Codigo, true, 'OR');

        /* Sort criteria */
        $sort->attributes = array(
            'Emp_RazonSocial' => array(
                'asc' => 'Emp_RazonSocial asc',
                'desc' => 'Emp_RazonSocial desc',
            ),
            '*',
        );
        $sort->defaultOrder = 'Emp_RazonSocial asc';
//        var_dump($criteria);
        //seleccionaar campos por lo de los filtros


        return new CActiveDataProvider($this, array(
            'criteria' => $criteria, 'sort' => $sort,
        ));
    }

    /*
      @author Cristian Araque<caraque@tradesystem.com.ec>
     * consulta para exportar tabla empresa 
     */

    public function getEmpresaSearch($registros = null, $filtros = null) {
//SELECT  
//emp.Emp_RazonSocial as "RazonSocial", 
//emp.Emp_RUC as "RUC", 
//gr.Gru_Nombre as "Grupo",
//ct.Cat_Nombre as "Categoria",
//cl.Cla_Nombre as "Clase",
//ge.GruEco_Nombre as "GrupoEconomico",
//bseg.SubSeg_Nombre as "Segmento",
//es.Est_Nombre as "Estado",
//emp.Emp_Eje_Codigo as "Ejecutivo",
//emp.Emp_SadegCodigo as "Sadeg",
//emp.Emp_Observacion as "Observacion",
//emp.Emp_Ciudad as "Ciudad"
//FROM empresa emp 
//left join grupo gr on emp.Emp_Gru_Codigo=gr.Gru_Codigo 
//left join categoria ct on emp.Emp_Cat_Codigo=ct.Cat_Codigo
//left join clase cl on emp.Emp_Cla_Codigo=cl.Cla_Codigo
//left join grupoeconomico ge on emp.Emp_Gru_Eco_Codigo=ge.GruEco_Codigo
//left join subsegmento bseg on emp.Emp_Seg_Codigo=bseg.SubSeg_Codigo
//left join estado es on emp.Emp_Est_Codigo=es.Est_Codigo
//#si vienen seleccionados
//where emp.Emp_Codigo in ('.$registros.')
        $command = Yii::app()->clientes->createCommand()
                ->select('
        emp.Emp_RazonSocial as RazonSocial,
        emp.Emp_RUC as RUC,
        gr.Gru_Nombre as Grupo,
        ct.Cat_Nombre as Categoria,
        cl.Cla_Nombre as Clase,
        ge.GruEco_Nombre as GrupoEconomico,
        bseg.SubSeg_Nombre as Segmento,
        es.Est_Nombre as Estado,
        emp.Emp_Eje_Codigo as Ejecutivo,
        emp.Emp_SadegCodigo as Sadeg,
        emp.Emp_Observacion as Observacion,
        emp.Emp_Ciudad as Ciudad')
                ->from('empresa emp')
                ->leftjoin('grupo gr', 'emp.Emp_Gru_Codigo=gr.Gru_Codigo')
                ->leftjoin('categoria ct', 'emp.Emp_Cat_Codigo=ct.Cat_Codigo')
                ->leftjoin('clase cl', 'emp.Emp_Cla_Codigo=cl.Cla_Codigo')
                ->leftjoin('grupoeconomico ge', 'emp.Emp_Gru_Eco_Codigo=ge.GruEco_Codigo')
                ->leftjoin('subsegmento bseg', 'emp.Emp_Seg_Codigo=bseg.SubSeg_Codigo')
                ->leftjoin('estado es', 'emp.Emp_Est_Codigo=es.Est_Codigo');
        if ($registros) {//viene solo los ids de las empresas
            $command->andWhere('emp.Emp_Codigo in (' . $registros . ')');
        }
        /*
          @author Cristian Araque<caraque@tradesystem.com.ec>
         *parte para exportar por medio del filtro de trullosearch 
         */
        //comparar con cada uno de los filtros
        if ($filtros) {
//        var_dump($filtros);die();
//        emp.Emp_RazonSocial as RazonSocial,
//        emp.Emp_RUC as RUC,
//        gr.Gru_Nombre as Grupo,
//        ct.Cat_Nombre as Categoria,
//        cl.Cla_Nombre as Clase,
//        ge.GruEco_Nombre as GrupoEconomico,
            $command->andWhere("emp.Emp_RazonSocial LIKE '%$filtros%'"
                    . "OR emp.Emp_RUC LIKE '%$filtros%'"
                    . "OR gr.Gru_Nombre LIKE '%$filtros%'"
                    . "OR ct.Cat_Nombre LIKE '%$filtros%'"
                    . "OR cl.Cla_Nombre LIKE '%$filtros%'"
                    . "OR ge.GruEco_Nombre LIKE '%$filtros%'");
            //datos del criteria para la consulta AYUDA!!!
//       (((((Emp_RazonSocial LIKE :ycp0) OR (Emp_RUC LIKE :ycp1)) OR (empGruCodigo.Gru_Nombre LIKE :ycp2)) OR (empClaCodigo.Cla_Nombre LIKE :ycp3)) OR (empCatCodigo.Cat_Nombre LIKE :ycp4)) OR (empGruEcoCodigo.GruEco_Nombre LIKE :ycp5)
        }
        return $command->queryAll();
    }
}
